#include "BulletCollision/Gimpact/gim_box_set.h"
#ifdef __cplusplus
extern "C" {
#endif
GIM_BOX_TREE_NODE* bullet_NewGIM_BOX_TREE_NODE(){
	GIM_BOX_TREE_NODE* wrap_out = new GIM_BOX_TREE_NODE();
	return wrap_out;
}

GIM_AABB* bullet_GIM_BOX_TREE_NODE_GetFieldOfM_bound(GIM_BOX_TREE_NODE* c_this){
	return (GIM_AABB*)(&c_this->m_bound);
}

unsigned int bullet_GIM_BOX_TREE_NODE_GetFieldOfM_data(GIM_BOX_TREE_NODE* c_this){
	return (unsigned int)(c_this->m_data);
}

unsigned int bullet_GIM_BOX_TREE_NODE_GetFieldOfM_escapeIndex(GIM_BOX_TREE_NODE* c_this){
	return (unsigned int)(c_this->m_escapeIndex);
}

unsigned int bullet_GIM_BOX_TREE_NODE_GetFieldOfM_left(GIM_BOX_TREE_NODE* c_this){
	return (unsigned int)(c_this->m_left);
}

unsigned int bullet_GIM_BOX_TREE_NODE_GetFieldOfM_right(GIM_BOX_TREE_NODE* c_this){
	return (unsigned int)(c_this->m_right);
}

bool bullet_GIM_BOX_TREE_NODE_is_leaf_node(GIM_BOX_TREE_NODE* c_this){
	bool c_out = c_this->is_leaf_node();
	bool wrap_out = (c_out);
	return wrap_out;
}

GIM_BOX_TREE* bullet_NewGIM_BOX_TREE(){
	GIM_BOX_TREE* wrap_out = new GIM_BOX_TREE();
	return wrap_out;
}

void bullet_GIM_BOX_TREE_clearNodes(GIM_BOX_TREE* c_this){
	c_this->clearNodes();
}

unsigned int bullet_GIM_BOX_TREE_getLeftNodeIndex(GIM_BOX_TREE* c_this,unsigned int nodeindex){
	unsigned int c_arg_nodeindex=nodeindex;
	unsigned int c_out = c_this->getLeftNodeIndex(c_arg_nodeindex);
	unsigned int wrap_out = (c_out);
	return wrap_out;
}

void bullet_GIM_BOX_TREE_getNodeBound(GIM_BOX_TREE* c_this,unsigned int nodeindex,GIM_AABB* bound){
	unsigned int c_arg_nodeindex=nodeindex;
	GIM_AABB& c_arg_bound=(GIM_AABB&)(*bound);
	c_this->getNodeBound(c_arg_nodeindex,c_arg_bound);
}

unsigned int bullet_GIM_BOX_TREE_getNodeCount(GIM_BOX_TREE* c_this){
	unsigned int c_out = c_this->getNodeCount();
	unsigned int wrap_out = (c_out);
	return wrap_out;
}

unsigned int bullet_GIM_BOX_TREE_getNodeData(GIM_BOX_TREE* c_this,unsigned int nodeindex){
	unsigned int c_arg_nodeindex=nodeindex;
	unsigned int c_out = c_this->getNodeData(c_arg_nodeindex);
	unsigned int wrap_out = (c_out);
	return wrap_out;
}

unsigned int bullet_GIM_BOX_TREE_getRightNodeIndex(GIM_BOX_TREE* c_this,unsigned int nodeindex){
	unsigned int c_arg_nodeindex=nodeindex;
	unsigned int c_out = c_this->getRightNodeIndex(c_arg_nodeindex);
	unsigned int wrap_out = (c_out);
	return wrap_out;
}

unsigned int bullet_GIM_BOX_TREE_getScapeNodeIndex(GIM_BOX_TREE* c_this,unsigned int nodeindex){
	unsigned int c_arg_nodeindex=nodeindex;
	unsigned int c_out = c_this->getScapeNodeIndex(c_arg_nodeindex);
	unsigned int wrap_out = (c_out);
	return wrap_out;
}

bool bullet_GIM_BOX_TREE_isLeafNode(GIM_BOX_TREE* c_this,unsigned int nodeindex){
	unsigned int c_arg_nodeindex=nodeindex;
	bool c_out = c_this->isLeafNode(c_arg_nodeindex);
	bool wrap_out = (c_out);
	return wrap_out;
}

void bullet_GIM_BOX_TREE_setNodeBound(GIM_BOX_TREE* c_this,unsigned int nodeindex,GIM_AABB* bound){
	unsigned int c_arg_nodeindex=nodeindex;
	GIM_AABB const& c_arg_bound=(GIM_AABB const&)(*bound);
	c_this->setNodeBound(c_arg_nodeindex,c_arg_bound);
}

GIM_AABB_DATA* bullet_NewGIM_AABB_DATA(){
	GIM_AABB_DATA* wrap_out = new GIM_AABB_DATA();
	return wrap_out;
}

GIM_AABB* bullet_GIM_AABB_DATA_GetFieldOfM_bound(GIM_AABB_DATA* c_this){
	return (GIM_AABB*)(&c_this->m_bound);
}

unsigned int bullet_GIM_AABB_DATA_GetFieldOfM_data(GIM_AABB_DATA* c_this){
	return (unsigned int)(c_this->m_data);
}

#ifdef __cplusplus
}
#endif
